Method of barcode templating for enhanced decoding performance

ABSTRACT

An exemplary method of decoding a barcode uses a barcode template of known fixed fields in the barcode to enhance error correction in decoding of the barcode. A barcode having encoded data is scanned with an exemplary electronic device including a barcode scanner, a memory, and a barcode template stored in the memory. The barcode template includes fixed data fields and variable data fields. The barcode&#39;s encoded data are sampled into a codeword array, and a barcode template that matches the format of the scanned barcode is selected. Typically, error correction is then performed on the codeword array, and the error-corrected codeword array is then outputted.

CROSS-REFERENCE TO PRIORITY APPLICATIONS

This U.S. nonprovisional application is a continuation of U.S. patent application Ser. No. 14/965,973 filed Dec. 11, 2015, which claims the benefit of U.S. Patent Application Ser. No. 62/095,808 for a Method of Barcode Templating for Enhanced Decoding Performance (filed Dec. 23, 2014), each of which is hereby incorporated by reference in its entirety.

FIELD OF THE INVENTION

The present specification relates to scanning and decoding of printed barcodes by electronic devices, such as portable data terminals, personal digital assistants, and computers. More particularly, the specification is directed to a method of barcode templating for enhanced decoding performance.

BACKGROUND

A common problem in bar code design, and particularly with PDF417 formatted barcodes, is insufficient error correction codes for the size of the barcode. This lack of sufficient error correction affects the readability of the barcode. The issue is further exacerbated by printing errors and/or damage to the barcode itself, which consequently can render these barcodes unreadable. Accordingly, there is a need to enhance the readability of barcodes that lack sufficient error correction.

SUMMARY

In one aspect, a method of decoding a barcode uses a barcode application specification that defines one or more bar code templates used in an application. A barcode template enhances error correction by storing any known fixed data used in every bar code matching that particular barcode template. A barcode having encoded data is scanned with an electronic device having a barcode scanner, a memory, and one or more barcode templates stored in the memory. A barcode template includes fixed fields of data common to every bar code matching that particular template and open fields indicating where the data are variable and unique for every bar code matching that particular template. The barcode scanner further includes barcode scanning software operative to apply a barcode template to correct the fixed field areas with the known data. This reduces the information reliant on the error correction, if error correction is present in the particular code, and enhances the error correction of the barcode.

In use, a barcode that is formatted according to one of the templates from the barcode application specification is scanned, and the scanned data is stored in a codeword array. A barcode template that matches the format of the scanned barcode is then selected. The barcode template is applied to the scanned barcode by using the fixed data fields of the barcode template to replace the scanned codeword data in the codeword array, thereby creating a corrected codeword array. If error correction is used in the particular symbology, error correction is then performed on the corrected codeword array. If the error correction process succeeds, the resulting error-corrected codeword array is then used to generate an output message.

One exemplary embodiment of the method described herein relieves some of the burden of the error correction in these codes, because the fixed data fields of the codeword data are guaranteed to be accurate and thus only the variable information in the barcode must be checked. By reducing the data that the error correction must accommodate, this exemplary method provides significant benefits where limited error correction affects the readability of certain barcodes.

The foregoing illustrative summary, as well as other exemplary objectives and/or advantages of the invention, and the manner in which the same are accomplished, are further explained within the following detailed description and its accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

An exemplary embodiment will now be described further by way of example with reference to the following examples and figures, which are intended to be illustrative only and not limiting upon the scope of the disclosure.

FIG. 1A is a perspective view of an exemplary embodiment of an electronic device that includes software operative for enhanced decoding performance of a barcode using a barcode template.

FIG. 1B is a block diagram of an exemplary embodiment of an electronic device that includes software operative for enhanced decoding performance of a barcode using a barcode template;

FIG. 2 is a view of a prior art two-dimensional barcode formatted in PDF417 format.

FIG. 3A is a view of a prior art two-dimensional barcode in a Data Matrix.

FIG. 3B is a view of a prior art two-dimensional barcode in MaxiCode format.

FIG. 3C is a view of a prior art two-dimensional barcode in Aztec Code format.

FIG. 3D is a view of a prior art two-dimensional barcode in QR Code format.

FIG. 3E is a view of a prior art two-dimensional barcode in Semacode Data Matrix format;

FIG. 3F is a view of a prior art two-dimensional barcode in High Capacity Color Barcode format.

FIG. 4 is an illustration of an exemplary embodiment of a barcode template according to the method described herein.

FIG. 5 is a flowchart illustrating an exemplary embodiment of the method of decoding a barcode described herein.

FIG. 6 is a flowchart illustrating an exemplary method of decoding a barcode using an electronic device.

DETAILED DESCRIPTION

Generally, the present method of decoding a barcode uses a barcode template of known fixed fields in the barcode to enhance error correction in decoding of the barcode.

A barcode having encoded data is scanned with an exemplary electronic device including a barcode scanner, a memory, and a barcode template stored in the memory. The barcode template includes fixed data fields (e.g., mask fields) and variable data fields (e.g., open fields). The barcode's encoded data are sampled into a codeword array, and a barcode template that matches the format of the scanned barcode is selected. The template is applied to the codeword array to correct (e.g., to autocorrect) the fixed data fields of the codeword array. That is, the barcode template is applied to the codeword array to correct the areas in the codeword array that correspond to the fixed data fields of the template. Typically, error correction is then performed on the codeword array, and the error-corrected codeword array is then outputted.

Referring to FIGS. 1A and 1B, an exemplary electronic device is shown and illustrated at 100. The electronic device includes a barcode scanner 102, a memory 104, and a barcode template 106 stored in the memory 104. A processor 108 is operative to run barcode scanning software (or firmware) 110 also stored on the electronic device 100.

Although an exemplary handheld scanner with a pistol grip 102 is shown, the electronic device 100 can have several different form factors, such as in-counter scanners, hands-free scanners, healthcare mobile computers, industrial hazardous location mobile computers, industrial barcode scanners, wireless barcode scanners, industrial cold storage mobile computers, and non-mobile computer scanner solutions. Accordingly, the handheld scanner exemplified in FIG. 1 is by way of example and not of limitation.

Referring to FIG. 2, an exemplary two-dimensional barcode is shown in PDF417, a stacked linear format that can support three to ninety rows of encoded information. Each row of the barcode includes a start pattern, a left row indicator, data codewords, a right row indicator, and a stop pattern. The left row indicator includes additional information, such as error correction information and the row number. The right row indicator may include additional information about the row. PDF417 is further described in ISO standard 15438, which is hereby incorporated by reference in its entirety.

Referring to FIGS. 3A-F, other configurations of two-dimensional barcodes may be used with the disclosed method, including matrix barcodes such as Data Matrix format (FIG. 3A), MaxiCode Format (FIG. 3B), Aztec Code format (FIG. 3C), QR Code format (FIG. 3D), Semacode Data Matrix format (FIG. 3E), and Microsoft High Capacity Color Format (FIG. 3F), as well as variations thereof. Data Matrix may be in Data Matrix version ECC 200 format or versions ECC 000-140 format as desired.

Although this exemplary method is described in relation to several known two-dimensional barcode technologies, the method applies to many kinds of information bearing indicia, including linear bar codes (e.g., Code 39, Code 128, etc.), stacked linear bar codes (e.g., PDF417, Codablock, etc.) two-dimensional matrix symbologies (e.g., Aztec, QR Code, etc.), postal codes (e.g., PostNet, Intelligent Mail bar code, etc.), optical character recognition, and other information bearing indicia symbologies. The examples of various barcodes in FIGS. 2 and 3A-F and described herein are provided by way of example and not of limitation.

Regardless of which barcode is used, a user who develops an application that involves reading a barcode—especially larger scale stacked codes like PDF417 or 2D matrix codes—will include a barcode application specification, which contains barcode templates defining the fields of the one or more kinds of barcodes. For example, these templates may include fixed data fields like headers, field names, separators, or other like data that do not vary from barcode to barcode. These templates may also include variable data fields. The variable data fields defined in the barcode specification, such as names, addresses, customer numbers, lot numbers, manufacturing date, and/or other variable data fields, make up only part of the total information in the barcode templates of the barcode application specification.

Referring to FIG. 4, an exemplary barcode template is shown generally at 400. The barcode template 400 include fixed data fields 402, which pertain to the fixed fields of a barcode used in an application as per the barcode application specification, and variable data fields 404, which are indicated here by “#” sign, although other symbols may be used. The variable data fields pertain to the data that will vary in the barcodes used in an application as per the barcode application specification.

FIG. 5 is a flowchart illustrating an exemplary method embodiment. The barcode template is loaded onto the electronic device via a configuration command, SDK call, or some other kind of entry prior to scanning. This barcode template is stored in memory of the electronic device and used during barcode decoding. There could be one or more different barcode templates stored for application to various formats of various symbologies, which the user could scan.

The barcode is scanned with the barcode scanner 102 of the electronic device 100. The barcode includes data encoded according to the barcode application specification. The electronic device then samples or otherwise extracts the codeword data of the scanned barcode into a codeword array.

A barcode application specification may have several templates defined, all of which may be stored in the memory 104 of electronic device 100. When deciding which template to apply to a specific set of codeword data, either all codes of a specific symbology could have the template applied or a decision of when to apply the template could be made based on dimensions of the bar code, error correction levels, or a comparison of the raw data against the template. Where the symbology used includes error correction, the template may also be applied before or after an initial error correction attempt on the sampled data.

The barcode template 400 is applied to the sampled codeword data by overwriting the known information (i.e., fixed data fields 402) into the corresponding data locations of the raw data codeword array, thus ensuring the accuracy of the fixed data fields of the codeword array. The data locations of the codeword array corresponding to the variable data fields of the barcode template are not disturbed. These actions are applied according to the template fields 404 of the barcode template 400.

Because the fixed data fields of the codeword array are correct, error correction, if supported by the symbology used, is only needed for the areas of the code with variable data fields, thus increasing readability of these barcodes. When the error correction of the codeword array succeeds, the resulting error-corrected codeword array is then used to generate an output message.

FIG. 6 is a flowchart illustrating another exemplary method embodiment. As shown in FIG. 6, the user would have an electronic device preloaded with barcode templates and firmware operative to apply the barcode template to the scanned barcode.

In an exemplary embodiment, the method efficiently processes more advanced kinds of barcodes, such as PDF417 and Data Matrix, that employ encodation modes as per the specific barcode encodation specification for a given symbology (e.g., ISO standard 15438 for PDF417). The purpose of these encodation modes is to compress as much data into as few bytes as possible.

Those having ordinary skill in the art will understand that a bar code message itself is different from the physical values of codewords that are stored in the bar code. For bar codes that do not have encoding modes, a bar code message (e.g., 123456) would have only one way to be encoded. In contrast, bar codes with encodation modes may encode that in a specified numeric compaction mode (e.g., only values 0-9) or text compaction mode (e.g., printable ASCII characters with a few special characters), and perhaps in other modes (e.g., byte modes). To apply the barcode template to codewords to facilitate decoding of barcode employing a barcode encodation specification, one should know more about the bar code than just the data or the template of the data. If the encodation mode(s) for how the data are encoded is unknown, how to apply the barcode template to a specific bar code to decode the bar code is uncertain.

Actual encoded codeword values, which may include mode information and a compressed version of the actual data, can seed the barcode template instead of basing the barcode template on the specific output data. By way of illustration, a general PDF417 templating system can be established to template the encoded data instead of the message data, thereby resulting in a general-rules template for PDF417 that can apply to every PDF417 barcode. The PDF417 specification requires that a barcode begin with a length codeword (i.e., the first data codeword indicates the number of data codewords in the entire data message). This information is redundant, however, from the height, width, and error-correction level of the barcode, which are already encoded in the “row indicators.” This information is known without considering the specific codeword data encoded. Thus, if the first codeword does not comport with what the data length determined from the redundant data (e.g., height, width, and error-correction level of the barcode), then it is probable that the codeword is wrong, in which case the correct codeword value can be restored.

Furthermore, PDF417 use a format for “padding” information at the end of a message (i.e., a set of empty data codewords referred to as “pad codewords”), which are intended to complete the physical matrix. Although the pad codewords have no message value associated with them, pad codewords are included in the error correction calculation, and getting them wrong incurs error-correction penalties. A section of pad codewords has a distinct signature, indicating that every codeword after it in the data codewords is a pad codeword, regardless of the actual codeword values.

Processing these advanced barcodes using templates associated with a barcode encodation specification is especially useful when error-correction of sampled, encoded data has failed. Attempting error correction on the sampled data is advisable, for example, in case a barcode fails to adhere to the barcode encodation specification established for a given symbology.

In summary, it can be appreciated from the foregoing description and illustrations that the disclosed method of decoding enhances the readability of barcodes lacking sufficient error correction. By applying a template to the decoded codeword array and automatically replacing the known fixed fields with the fixed data, the known fixed fields are guaranteed to be accurate, leaving the subsequent error correction steps to focus upon the variable data fields. Not only is the decoded barcode more accurate, but fewer error-correction processing steps results in faster decoding. For these reasons, the exemplary method of decoding a barcode using a barcode template is believed to represent significant advancements having substantial commercial merit.

To supplement the present disclosure, this application incorporates entirely by reference the following patents, patent application publications, and patent applications:

-   U.S. Pat. Nos. 6,832,725; 7,128,266; 7,159,783; 7,413,127;     7,726,575; 8,294,969; 8,317,105; 8,322,622; 8,366,005; 8,371,507;     8,376,233; 8,381,979; 8,390,909; 8,408,464; 8,408,468; 8,408,469;     8,424,768; 8,448,863; 8,457,013; 8,459,557; 8,469,272; 8,474,712;     8,479,992; 8,490,877; 8,517,271; 8,523,076; 8,528,818; 8,544,737;     8,548,242; 8,548,420; 8,550,335; 8,550,354; 8,550,357; 8,556,174;     8,556,176; 8,556,177; 8,559,767; 8,599,957; 8,561,895; 8,561,903;     8,561,905; 8,565,107; 8,571,307; 8,579,200; 8,583,924; 8,584,945;     8,587,595; 8,587,697; 8,588,869; 8,590,789; 8,596,539; 8,596,542;     8,596,543; 8,599,271; 8,599,957; 8,600,158; 8,600,167; 8,602,309;     8,608,053; 8,608,071; 8,611,309; 8,615,487; 8,616,454; 8,621,123;     8,622,303; 8,628,013; 8,628,015; 8,628,016; 8,629,926; 8,630,491;     8,635,309; 8,636,200; 8,636,212; 8,636,215; 8,636,224; 8,638,806;     8,640,958; 8,640,960; 8,643,717; 8,646,692; 8,646,694; 8,657,200;     8,659,397; 8,668,149; 8,678,285; 8,678,286; 8,682,077; 8,687,282;     8,692,927; 8,695,880; 8,698,949; 8,717,494; 8,717,494; 8,720,783;     8,723,804; 8,723,904; 8,727,223; D702,237; 8,740,082; 8,740,085;     8,746,563; 8,750,445; 8,752,766; 8,756,059; 8,757,495; 8,760,563;     8,763,909; 8,777,108; 8,777,109; 8,779,898; 8,781,520; 8,783,573;     8,789,757; 8,789,758; 8,789,759; 8,794,520; 8,794,522; 8,794,525;     8,794,526; 8,798,367; 8,807,431; 8,807,432; 8,820,630; 8,822,848;     8,824,692; 8,824,696; 8,842,849; 8,844,822; 8,844,823; 8,849,019;     8,851,383; 8,854,633; 8,866,963; 8,868,421; 8,868,519; 8,868,802;     8,868,803; 8,870,074; 8,879,639; 8,880,426; 8,881,983; 8,881,987;     8,903,172; 8,908,995; 8,910,870; 8,910,875; 8,914,290; 8,914,788;     8,915,439; 8,915,444; 8,916,789; 8,918,250; 8,918,564; 8,925,818;     8,939,374; 8,942,480; 8,944,313; 8,944,327; 8,944,332; 8,950,678;     8,967,468; 8,971,346; 8,976,030; 8,976,368; 8,978,981; 8,978,983;     8,978,984; 8,985,456; 8,985,457; 8,985,459; 8,985,461; 8,988,578;     8,988,590; 8,991,704; 8,996,194; 8,996,384; 9,002,641; 9,007,368;     9,010,641; 9,015,513; 9,016,576; 9,022,288; 9,030,964; 9,033,240;     9,033,242; 9,036,054; 9,037,344; 9,038,911; 9,038,915; 9,047,098;     9,047,359; 9,047,420; 9,047,525; 9,047,531; 9,053,055; 9,053,378;     9,053,380; 9,058,526; 9,064,165; 9,064,167; 9,064,168; 9,064,254;     9,066,032; 9,070,032; U.S. Design Pat. No. D716,285; U.S. Design     Pat. No. D723,560; U.S. Design Pat. No. D730,357; U.S. Design Pat.     No. D730,901; U.S. Design Pat. No. D730,902; U.S. Design Pat. No.     D733,112; U.S. Design Pat. No. D734,339; International Publication     No. 2013/163789; International Publication No. 2013/173985;     International Publication No. 2014/019130; International Publication     No. 2014/110495; U.S. Patent Application Publication No.     2008/0185432; U.S. Patent Application Publication No. 2009/0134221;     U.S. Patent Application Publication No. 2010/0177080; U.S. Patent     Application Publication No. 2010/0177076; U.S. Patent Application     Publication No. 2010/0177707; U.S. Patent Application Publication     No. 2010/0177749; U.S. Patent Application Publication No.     2010/0265880; U.S. Patent Application Publication No. 2011/0202554;     U.S. Patent Application Publication No. 2012/0111946; U.S. Patent     Application Publication No. 2012/0168511; U.S. Patent Application     Publication No. 2012/0168512; U.S. Patent Application Publication     No. 2012/0193423; U.S. Patent Application Publication No.     2012/0203647; U.S. Patent Application Publication No. 2012/0223141;     U.S. Patent Application Publication No. 2012/0228382; U.S. Patent     Application Publication No. 2012/0248188; U.S. Patent Application     Publication No. 2013/0043312; U.S. Patent Application Publication     No. 2013/0082104; U.S. Patent Application Publication No.     2013/0175341; U.S. Patent Application Publication No. 2013/0175343;     U.S. Patent Application Publication No. 2013/0257744; U.S. Patent     Application Publication No. 2013/0257759; U.S. Patent Application     Publication No. 2013/0270346; U.S. Patent Application Publication     No. 2013/0287258; U.S. Patent Application Publication No.     2013/0292475; U.S. Patent Application Publication No. 2013/0292477;     U.S. Patent Application Publication No. 2013/0293539; U.S. Patent     Application Publication No. 2013/0293540; U.S. Patent Application     Publication No. 2013/0306728; U.S. Patent Application Publication     No. 2013/0306731; U.S. Patent Application Publication No.     2013/0307964; U.S. Patent Application Publication No. 2013/0308625;     U.S. Patent Application Publication No. 2013/0313324; U.S. Patent     Application Publication No. 2013/0313325; U.S. Patent Application     Publication No. 2013/0342717; U.S. Patent Application Publication     No. 2014/0001267; U.S. Patent Application Publication No.     2014/0008439; U.S. Patent Application Publication No. 2014/0025584;     U.S. Patent Application Publication No. 2014/0034734; U.S. Patent     Application Publication No. 2014/0036848; U.S. Patent Application     Publication No. 2014/0039693; U.S. Patent Application Publication     No. 2014/0042814; U.S. Patent Application Publication No.     2014/0049120; U.S. Patent Application Publication No. 2014/0049635;     U.S. Patent Application Publication No. 2014/0061306; U.S. Patent     Application Publication No. 2014/0063289; U.S. Patent Application     Publication No. 2014/0066136; U.S. Patent Application Publication     No. 2014/0067692; U.S. Patent Application Publication No.     2014/0070005; U.S. Patent Application Publication No. 2014/0071840;     U.S. Patent Application Publication No. 2014/0074746; U.S. Patent     Application Publication No. 2014/0076974; U.S. Patent Application     Publication No. 2014/0078341; U.S. Patent Application Publication     No. 2014/0078345; U.S. Patent Application Publication No.     2014/0097249; U.S. Patent Application Publication No. 2014/0098792;     U.S. Patent Application Publication No. 2014/0100813; U.S. Patent     Application Publication No. 2014/0103115; U.S. Patent Application     Publication No. 2014/0104413; U.S. Patent Application Publication     No. 2014/0104414; U.S. Patent Application Publication No.     2014/0104416; U.S. Patent Application Publication No. 2014/0104451;     U.S. Patent Application Publication No. 2014/0106594; U.S. Patent     Application Publication No. 2014/0106725; U.S. Patent Application     Publication No. 2014/0108010; U.S. Patent Application Publication     No. 2014/0108402; U.S. Patent Application Publication No.     2014/0110485; U.S. Patent Application Publication No. 2014/0114530;     U.S. Patent Application Publication No. 2014/0124577; U.S. Patent     Application Publication No. 2014/0124579; U.S. Patent Application     Publication No. 2014/0125842; U.S. Patent Application Publication     No. 2014/0125853; U.S. Patent Application Publication No.     2014/0125999; U.S. Patent Application Publication No. 2014/0129378;     U.S. Patent Application Publication No. 2014/0131438; U.S. Patent     Application Publication No. 2014/0131441; U.S. Patent Application     Publication No. 2014/0131443; U.S. Patent Application Publication     No. 2014/0131444; U.S. Patent Application Publication No.     2014/0131445; U.S. Patent Application Publication No. 2014/0131448;     U.S. Patent Application Publication No. 2014/0133379; U.S. Patent     Application Publication No. 2014/0136208; U.S. Patent Application     Publication No. 2014/0140585; U.S. Patent Application Publication     No. 2014/0151453; U.S. Patent Application Publication No.     2014/0152882; U.S. Patent Application Publication No. 2014/0158770;     U.S. Patent Application Publication No. 2014/0159869; U.S. Patent     Application Publication No. 2014/0166755; U.S. Patent Application     Publication No. 2014/0166759; U.S. Patent Application Publication     No. 2014/0168787; U.S. Patent Application Publication No.     2014/0175165; U.S. Patent Application Publication No. 2014/0175172;     U.S. Patent Application Publication No. 2014/0191644; U.S. Patent     Application Publication No. 2014/0191913; U.S. Patent Application     Publication No. 2014/0197238; U.S. Patent Application Publication     No. 2014/0197239; U.S. Patent Application Publication No.     2014/0197304; U.S. Patent Application Publication No. 2014/0214631;     U.S. Patent Application Publication No. 2014/0217166; U.S. Patent     Application Publication No. 2014/0217180; U.S. Patent Application     Publication No. 2014/0231500; U.S. Patent Application Publication     No. 2014/0232930; U.S. Patent Application Publication No.     2014/0247315; U.S. Patent Application Publication No. 2014/0263493;     U.S. Patent Application Publication No. 2014/0263645; U.S. Patent     Application Publication No. 2014/0267609; U.S. Patent Application     Publication No. 2014/0270196; U.S. Patent Application Publication     No. 2014/0270229; U.S. Patent Application Publication No.     2014/0278387; U.S. Patent Application Publication No. 2014/0278391;     U.S. Patent Application Publication No. 2014/0282210; U.S. Patent     Application Publication No. 2014/0284384; U.S. Patent Application     Publication No. 2014/0288933; U.S. Patent Application Publication     No. 2014/0297058; U.S. Patent Application Publication No.     2014/0299665; U.S. Patent Application Publication No. 2014/0312121;     U.S. Patent Application Publication No. 2014/0319220; U.S. Patent     Application Publication No. 2014/0319221; U.S. Patent Application     Publication No. 2014/0326787; U.S. Patent Application Publication     No. 2014/0332590; U.S. Patent Application Publication No.     2014/0344943; U.S. Patent Application Publication No. 2014/0346233;     U.S. Patent Application Publication No. 2014/0351317; U.S. Patent     Application Publication No. 2014/0353373; U.S. Patent Application     Publication No. 2014/0361073; U.S. Patent Application Publication     No. 2014/0361082; U.S. Patent Application Publication No.     2014/0362184; U.S. Patent Application Publication No. 2014/0363015;     U.S. Patent Application Publication No. 2014/0369511; U.S. Patent     Application Publication No. 2014/0374483; U.S. Patent Application     Publication No. 2014/0374485; U.S. Patent Application Publication     No. 2015/0001301; U.S. Patent Application Publication No.     2015/0001304; U.S. Patent Application Publication No. 2015/0003673;     U.S. Patent Application Publication No. 2015/0009338; U.S. Patent     Application Publication No. 2015/0009610; U.S. Patent Application     Publication No. 2015/0014416; U.S. Patent Application Publication     No. 2015/0021397; U.S. Patent Application Publication No.     2015/0028102; U.S. Patent Application Publication No. 2015/0028103;     U.S. Patent Application Publication No. 2015/0028104; U.S. Patent     Application Publication No. 2015/0029002; U.S. Patent Application     Publication No. 2015/0032709; U.S. Patent Application Publication     No. 2015/0039309; U.S. Patent Application Publication No.     2015/0039878; U.S. Patent Application Publication No. 2015/0040378;     U.S. Patent Application Publication No. 2015/0048168; U.S. Patent     Application Publication No. 2015/0049347; U.S. Patent Application     Publication No. 2015/0051992; U.S. Patent Application Publication     No. 2015/0053766; U.S. Patent Application Publication No.     2015/0053768; U.S. Patent Application Publication No. 2015/0053769;     U.S. Patent Application Publication No. 2015/0060544; U.S. Patent     Application Publication No. 2015/0062366; U.S. Patent Application     Publication No. 2015/0063215; U.S. Patent Application Publication     No. 2015/0063676; U.S. Patent Application Publication No.     2015/0069130; U.S. Patent Application Publication No. 2015/0071819;     U.S. Patent Application Publication No. 2015/0083800; U.S. Patent     Application Publication No. 2015/0086114; U.S. Patent Application     Publication No. 2015/0088522; U.S. Patent Application Publication     No. 2015/0096872; U.S. Patent Application Publication No.     2015/0099557; U.S. Patent Application Publication No. 2015/0100196;     U.S. Patent Application Publication No. 2015/0102109; U.S. Patent     Application Publication No. 2015/0115035; U.S. Patent Application     Publication No. 2015/0127791; U.S. Patent Application Publication     No. 2015/0128116; U.S. Patent Application Publication No.     2015/0129659; U.S. Patent Application Publication No. 2015/0133047;     U.S. Patent Application Publication No. 2015/0134470; U.S. Patent     Application Publication No. 2015/0136851; U.S. Patent Application     Publication No. 2015/0136854; U.S. Patent Application Publication     No. 2015/0142492; U.S. Patent Application Publication No.     2015/0144692; U.S. Patent Application Publication No. 2015/0144698;     U.S. Patent Application Publication No. 2015/0144701; U.S. Patent     Application Publication No. 2015/0149946; U.S. Patent Application     Publication No. 2015/0161429; U.S. Patent Application Publication     No. 2015/0169925; U.S. Patent Application Publication No.     2015/0169929; U.S. Patent Application Publication No. 2015/0178523;     U.S. Patent Application Publication No. 2015/0178534; U.S. Patent     Application Publication No. 2015/0178535; U.S. Patent Application     Publication No. 2015/0178536; U.S. Patent Application Publication     No. 2015/0178537; U.S. Patent Application Publication No.     2015/0181093; U.S. Patent Application Publication No. 2015/0181109; -   U.S. patent application Ser. No. 13/367,978 for a Laser Scanning     Module Employing an Elastomeric U-Hinge Based Laser Scanning     Assembly, filed Feb. 7, 2012 (Feng et al.); -   U.S. patent application No. 29/458,405 for an Electronic Device,     filed Jun. 19, 2013 (Fitch et al.); -   U.S. patent application Ser. No. 29/459,620 for an Electronic Device     Enclosure, filed Jul. 2, 2013 (London et al.); -   U.S. patent application Ser. No. 29/468,118 for an Electronic Device     Case, filed Sep. 26, 2013 (Oberpriller et al.); -   U.S. patent application Ser. No. 14/150,393 for Indicia-reader     Having Unitary Construction Scanner, filed Jan. 8, 2014 (Colavito et     al.); -   U.S. patent application Ser. No. 14/200,405 for Indicia Reader for     Size-Limited Applications filed Mar. 7, 2014 (Feng et al.); -   U.S. patent application Ser. No. 14/231,898 for Hand-Mounted     Indicia-Reading Device with Finger Motion Triggering filed Apr. 1,     2014 (Van Horn et al.); -   U.S. patent application Ser. No. 29/486,759 for an Imaging Terminal,     filed Apr. 2, 2014 (Oberpriller et al.); -   U.S. patent application Ser. No. 14/257,364 for Docking System and     Method Using Near Field Communication filed Apr. 21, 2014     (Showering); -   U.S. patent application Ser. No. 14/264,173 for Autofocus Lens     System for Indicia Readers filed Apr. 29, 2014 (Ackley et al.); -   U.S. patent application Ser. No. 14/277,337 for MULTIPURPOSE OPTICAL     READER, filed May 14, 2014 (Jovanovski et al.); -   U.S. patent application Ser. No. 14/283,282 for TERMINAL HAVING     ILLUMINATION AND FOCUS CONTROL filed May 21, 2014 (Liu et al.); -   U.S. patent application Ser. No. 14/327,827 for a MOBILE-PHONE     ADAPTER FOR ELECTRONIC TRANSACTIONS, filed Jul. 10, 2014 (Hejl); -   U.S. patent application Ser. No. 14/334,934 for a SYSTEM AND METHOD     FOR INDICIA VERIFICATION, filed Jul. 18, 2014 (Hejl); -   U.S. patent application Ser. No. 14/339,708 for LASER SCANNING CODE     SYMBOL READING SYSTEM, filed Jul. 24, 2014 (Xian et al.); -   U.S. patent application Ser. No. 14/340,627 for an AXIALLY     REINFORCED FLEXIBLE SCAN ELEMENT, filed Jul. 25, 2014 (Rueblinger et     al.); -   U.S. patent application Ser. No. 14/446,391 for MULTIFUNCTION POINT     OF SALE APPARATUS WITH OPTICAL SIGNATURE CAPTURE filed Jul. 30, 2014     (Good et al.); -   U.S. patent application Ser. No. 14/452,697 for INTERACTIVE INDICIA     READER, filed Aug. 6, 2014 (Todeschini); -   U.S. patent application Ser. No. 14/453,019 for DIMENSIONING SYSTEM     WITH GUIDED ALIGNMENT, filed Aug. 6, 2014 (Li et al.); -   U.S. patent application Ser. No. 14/462,801 for MOBILE COMPUTING     DEVICE WITH DATA COGNITION SOFTWARE, filed on Aug. 19, 2014     (Todeschini et al.); -   U.S. patent application Ser. No. 14/483,056 for VARIABLE DEPTH OF     FIELD BARCODE SCANNER filed Sep. 10, 2014 (McCloskey et al.); -   U.S. patent application Ser. No. 14/513,808 for IDENTIFYING     INVENTORY ITEMS IN A STORAGE FACILITY filed Oct. 14, 2014 (Singel et     al.); -   U.S. patent application Ser. No. 14/519,195 for HANDHELD     DIMENSIONING SYSTEM WITH FEEDBACK filed Oct. 21, 2014 (Laffargue et     al.); -   U.S. patent application Ser. No. 14/519,179 for DIMENSIONING SYSTEM     WITH MULTIPATH INTERFERENCE MITIGATION filed Oct. 21, 2014 (Thuries     et al.); -   U.S. patent application Ser. No. 14/519,211 for SYSTEM AND METHOD     FOR DIMENSIONING filed Oct. 21, 2014 (Ackley et al.); -   U.S. patent application Ser. No. 14/519,233 for HANDHELD DIMENSIONER     WITH DATA-QUALITY INDICATION filed Oct. 21, 2014 (Laffargue et al.); -   U.S. patent application Ser. No. 14/519,249 for HANDHELD     DIMENSIONING SYSTEM WITH MEASUREMENT-CONFORMANCE FEEDBACK filed Oct.     21, 2014 (Ackley et al.); -   U.S. patent application Ser. No. 14/527,191 for METHOD AND SYSTEM     FOR RECOGNIZING SPEECH USING WILDCARDS IN AN EXPECTED RESPONSE filed     Oct. 29, 2014 (Braho et al.); -   U.S. patent application Ser. No. 14/529,563 for ADAPTABLE INTERFACE     FOR A MOBILE COMPUTING DEVICE filed Oct. 31, 2014 (Schoon et al.); -   U.S. patent application Ser. No. 14/529,857 for BARCODE READER WITH     SECURITY FEATURES filed Oct. 31, 2014 (Todeschini et al.); -   U.S. patent application Ser. No. 14/398,542 for PORTABLE ELECTRONIC     DEVICES HAVING A SEPARATE LOCATION TRIGGER UNIT FOR USE IN     CONTROLLING AN APPLICATION UNIT filed Nov. 3, 2014 (Bian et al.); -   U.S. patent application Ser. No. 14/531,154 for DIRECTING AN     INSPECTOR THROUGH AN INSPECTION filed Nov. 3, 2014 (Miller et al.); -   U.S. patent application Ser. No. 14/533,319 for BARCODE SCANNING     SYSTEM USING WEARABLE DEVICE WITH EMBEDDED CAMERA filed Nov. 5, 2014     (Todeschini); -   U.S. patent application Ser. No. 14/535,764 for CONCATENATED     EXPECTED RESPONSES FOR SPEECH RECOGNITION filed Nov. 7, 2014 (Braho     et al.); -   U.S. patent application Ser. No. 14/568,305 for AUTO-CONTRAST     VIEWFINDER FOR AN INDICIA READER filed Dec. 12, 2014 (Todeschini); -   U.S. patent application Ser. No. 14/573,022 for DYNAMIC DIAGNOSTIC     INDICATOR GENERATION filed Dec. 17, 2014 (Goldsmith); -   U.S. patent application Ser. No. 14/578,627 for SAFETY SYSTEM AND     METHOD filed Dec. 22, 2014 (Ackley et al.); -   U.S. patent application Ser. No. 14/580,262 for MEDIA GATE FOR     THERMAL TRANSFER PRINTERS filed Dec. 23, 2014 (Bowles); -   U.S. patent application Ser. No. 14/590,024 for SHELVING AND PACKAGE     LOCATING SYSTEMS FOR DELIVERY VEHICLES filed Jan. 6, 2015 (Payne); -   U.S. patent application Ser. No. 14/596,757 for SYSTEM AND METHOD     FOR DETECTING BARCODE PRINTING ERRORS filed Jan. 14, 2015 (Ackley); -   U.S. patent application Ser. No. 14/416,147 for OPTICAL READING     APPARATUS HAVING VARIABLE SETTINGS filed Jan. 21, 2015 (Chen et     al.); -   U.S. patent application Ser. No. 14/614,706 for DEVICE FOR     SUPPORTING AN ELECTRONIC TOOL ON A USER'S HAND filed Feb. 5, 2015     (Oberpriller et al.); -   U.S. patent application Ser. No. 14/614,796 for CARGO APPORTIONMENT     TECHNIQUES filed Feb. 5, 2015 (Morton et al.); -   U.S. patent application Ser. No. 29/516,892 for TABLE COMPUTER filed     Feb. 6, 2015 (Bidwell et al.); -   U.S. patent application Ser. No. 14/619,093 for METHODS FOR TRAINING     A SPEECH RECOGNITION SYSTEM filed Feb. 11, 2015 (Pecorari); -   U.S. patent application Ser. No. 14/628,708 for DEVICE, SYSTEM, AND     METHOD FOR DETERMINING THE STATUS OF CHECKOUT LANES filed Feb. 23,     2015 (Todeschini); -   U.S. patent application Ser. No. 14/630,841 for TERMINAL INCLUDING     IMAGING ASSEMBLY filed Feb. 25, 2015 (Gomez et al.); -   U.S. patent application Ser. No. 14/635,346 for SYSTEM AND METHOD     FOR RELIABLE STORE-AND-FORWARD DATA HANDLING BY ENCODED INFORMATION     READING TERMINALS filed Mar. 2, 2015 (Sevier); -   U.S. patent application Ser. No. 29/519,017 for SCANNER filed Mar.     2, 2015 (Zhou et al.); -   U.S. patent application Ser. No. 14/405,278 for DESIGN PATTERN FOR     SECURE STORE filed Mar. 9, 2015 (Zhu et al.); -   U.S. patent application Ser. No. 14/660,970 for DECODABLE INDICIA     READING TERMINAL WITH COMBINED ILLUMINATION filed Mar. 18, 2015     (Kearney et al.); -   U.S. patent application Ser. No. 14/661,013 for REPROGRAMMING SYSTEM     AND METHOD FOR DEVICES INCLUDING PROGRAMMING SYMBOL filed Mar. 18,     2015 (Soule et al.); -   U.S. patent application Ser. No. 14/662,922 for MULTIFUNCTION POINT     OF SALE SYSTEM filed Mar. 19, 2015 (Van Horn et al.); -   U.S. patent application Ser. No. 14/663,638 for VEHICLE MOUNT     COMPUTER WITH CONFIGURABLE IGNITION SWITCH BEHAVIOR filed Mar. 20,     2015 (Davis et al.); -   U.S. patent application Ser. No. 14/664,063 for METHOD AND     APPLICATION FOR SCANNING A BARCODE WITH A SMART DEVICE WHILE     CONTINUOUSLY RUNNING AND DISPLAYING AN APPLICATION ON THE SMART     DEVICE DISPLAY filed Mar. 20, 2015 (Todeschini); -   U.S. patent application Ser. No. 14/669,280 for TRANSFORMING     COMPONENTS OF A WEB PAGE TO VOICE PROMPTS filed Mar. 26, 2015     (Funyak et al.); -   U.S. patent application Ser. No. 14/674,329 for AIMER FOR BARCODE     SCANNING filed Mar. 31, 2015 (Bidwell); -   U.S. patent application Ser. No. 14/676,109 for INDICIA READER filed     Apr. 1, 2015 (Huck); -   U.S. patent application Ser. No. 14/676,327 for DEVICE MANAGEMENT     PROXY FOR SECURE DEVICES filed Apr. 1, 2015 (Yeakley et al.); -   U.S. patent application Ser. No. 14/676,898 for NAVIGATION SYSTEM     CONFIGURED TO INTEGRATE MOTION SENSING DEVICE INPUTS filed Apr. 2,     2015 (Showering); -   U.S. patent application Ser. No. 14/679,275 for DIMENSIONING SYSTEM     CALIBRATION SYSTEMS AND METHODS filed Apr. 6, 2015 (Laffargue et     al.); -   U.S. patent application Ser. No. 29/523,098 for HANDLE FOR A TABLET     COMPUTER filed Apr. 7, 2015 (Bidwell et al.); -   U.S. patent application Ser. No. 14/682,615 for SYSTEM AND METHOD     FOR POWER MANAGEMENT OF MOBILE DEVICES filed Apr. 9, 2015 (Murawski     et al.); -   U.S. patent application Ser. No. 14/686,822 for MULTIPLE PLATFORM     SUPPORT SYSTEM AND METHOD filed Apr. 15, 2015 (Qu et al.); -   U.S. patent application Ser. No. 14/687,289 for SYSTEM FOR     COMMUNICATION VIA A PERIPHERAL HUB filed Apr. 15, 2015 (Kohtz et     al.); -   U.S. patent application Ser. No. 29/524,186 for SCANNER filed Apr.     17, 2015 (Zhou et al.); -   U.S. patent application Ser. No. 14/695,364 for MEDICATION     MANAGEMENT SYSTEM filed Apr. 24, 2015 (Sewell et al.); -   U.S. patent application Ser. No. 14/695,923 for SECURE UNATTENDED     NETWORK AUTHENTICATION filed Apr. 24, 2015 (Kubler et al.); -   U.S. patent application Ser. No. 29/525,068 for TABLET COMPUTER WITH     REMOVABLE SCANNING DEVICE filed Apr. 27, 2015 (Schulte et al.); -   U.S. patent application Ser. No. 14/699,436 for SYMBOL READING     SYSTEM HAVING PREDICTIVE DIAGNOSTICS filed Apr. 29, 2015 (Nahill et     al.); -   U.S. patent application Ser. No. 14/702,110 for SYSTEM AND METHOD     FOR REGULATING BARCODE DATA INJECTION INTO A RUNNING APPLICATION ON     A SMART DEVICE filed May 1, 2015 (Todeschini et al.); -   U.S. patent application Ser. No. 14/702,979 for TRACKING BATTERY     CONDITIONS filed May 4, 2015 (Young et al.); -   U.S. patent application Ser. No. 14/704,050 for INTERMEDIATE LINEAR     POSITIONING filed May 5, 2015 (Charpentier et al.); -   U.S. patent application Ser. No. 14/705,012 for HANDS-FREE HUMAN     MACHINE INTERFACE RESPONSIVE TO A DRIVER OF A VEHICLE filed May 6,     2015 (Fitch et al.); -   U.S. patent application Ser. No. 14/705,407 for METHOD AND SYSTEM TO     PROTECT SOFTWARE-BASED NETWORK-CONNECTED DEVICES FROM ADVANCED     PERSISTENT THREAT filed May 6, 2015 (Hussey et al.); -   U.S. patent application Ser. No. 14/707,037 for SYSTEM AND METHOD     FOR DISPLAY OF INFORMATION USING A VEHICLE-MOUNT COMPUTER filed May     8, 2015 (Chamberlin); -   U.S. patent application Ser. No. 14/707,123 for APPLICATION     INDEPENDENT DEX/UCS INTERFACE filed May 8, 2015 (Pape); -   U.S. patent application Ser. No. 14/707,492 for METHOD AND APPARATUS     FOR READING OPTICAL INDICIA USING A PLURALITY OF DATA SOURCES filed     May 8, 2015 (Smith et al.); -   U.S. patent application Ser. No. 14/710,666 for PRE-PAID USAGE     SYSTEM FOR ENCODED INFORMATION READING TERMINALS filed May 13, 2015     (Smith); -   U.S. patent application Ser. No. 29/526,918 for CHARGING BASE filed     May 14, 2015 (Fitch et al.); -   U.S. patent application Ser. No. 14/715,672 for AUGUMENTED REALITY     ENABLED HAZARD DISPLAY filed May 19, 2015 (Venkatesha et al.); -   U.S. patent application Ser. No. 14/715,916 for EVALUATING IMAGE     VALUES filed May 19, 2015 (Ackley); -   U.S. patent application Ser. No. 14/722,608 for INTERACTIVE USER     INTERFACE FOR CAPTURING A DOCUMENT IN AN IMAGE SIGNAL filed May 27,     2015 (Showering et al.); -   U.S. patent application Ser. No. 29/528,165 for IN-COUNTER BARCODE     SCANNER filed May 27, 2015 (Oberpriller et al.); -   U.S. patent application Ser. No. 14/724,134 for ELECTRONIC DEVICE     WITH WIRELESS PATH SELECTION CAPABILITY filed May 28, 2015 (Wang et     al.); -   U.S. patent application Ser. No. 14/724,849 for METHOD OF     PROGRAMMING THE DEFAULT CABLE INTERFACE SOFTWARE IN AN INDICIA     READING DEVICE filed May 29, 2015 (Barten); -   U.S. patent application Ser. No. 14/724,908 for IMAGING APPARATUS     HAVING IMAGING ASSEMBLY filed May 29, 2015 (Barber et al.); -   U.S. patent application Ser. No. 14/725,352 for APPARATUS AND     METHODS FOR MONITORING ONE OR MORE PORTABLE DATA TERMINALS     (Caballero et al.); -   U.S. patent application Ser. No. 29/528,590 for ELECTRONIC DEVICE     filed May 29, 2015 (Fitch et al.); -   U.S. patent application Ser. No. 29/528,890 for MOBILE COMPUTER     HOUSING filed Jun. 2, 2015 (Fitch et al.); -   U.S. patent application Ser. No. 14/728,397 for DEVICE MANAGEMENT     USING VIRTUAL INTERFACES CROSS-REFERENCE TO RELATED APPLICATIONS     filed Jun. 2, 2015 (Caballero); -   U.S. patent application Ser. No. 14/732,870 for DATA COLLECTION     MODULE AND SYSTEM filed Jun. 8, 2015 (Powilleit); -   U.S. patent application Ser. No. 29/529,441 for INDICIA READING     DEVICE filed Jun. 8, 2015 (Zhou et al.); -   U.S. patent application Ser. No. 14/735,717 for INDICIA-READING     SYSTEMS HAVING AN INTERFACE WITH A USER'S NERVOUS SYSTEM filed Jun.     10, 2015 (Todeschini); -   U.S. patent application Ser. No. 14/738,038 for METHOD OF AND SYSTEM     FOR DETECTING OBJECT WEIGHING INTERFERENCES filed Jun. 12, 2015     (Amundsen et al.); -   U.S. patent application Ser. No. 14/740,320 for TACTILE SWITCH FOR A     MOBILE ELECTRONIC DEVICE filed Jun. 16, 2015 (Bandringa); -   U.S. patent application Ser. No. 14/740,373 for CALIBRATING A VOLUME     DIMENSIONER filed Jun. 16, 2015 (Ackley et al.); -   U.S. patent application Ser. No. 14/742,818 for INDICIA READING     SYSTEM EMPLOYING DIGITAL GAIN CONTROL filed Jun. 18, 2015 (Xian et     al.); -   U.S. patent application Ser. No. 14/743,257 for WIRELESS MESH POINT     PORTABLE DATA TERMINAL filed Jun. 18, 2015 (Wang et al.); -   U.S. patent application Ser. No. 29/530,600 for CYCLONE filed Jun.     18, 2015 (Vargo et al); -   U.S. patent application Ser. No. 14/744,633 for IMAGING APPARATUS     COMPRISING IMAGE SENSOR ARRAY HAVING SHARED GLOBAL SHUTTER CIRCUITRY     filed Jun. 19, 2015 (Wang); -   U.S. patent application Ser. No. 14/744,836 for CLOUD-BASED SYSTEM     FOR READING OF DECODABLE INDICIA filed Jun. 19, 2015 (Todeschini et     al.); -   U.S. patent application Ser. No. 14/745,006 for SELECTIVE OUTPUT OF     DECODED MESSAGE DATA filed Jun. 19, 2015 (Todeschini et al.); -   U.S. patent application Ser. No. 14/747,197 for OPTICAL PATTERN     PROJECTOR filed Jun. 23, 2015 (Thuries et al.); -   U.S. patent application Ser. No. 14/747,490 for DUAL-PROJECTOR     THREE-DIMENSIONAL SCANNER filed Jun. 23, 2015 (Jovanovski et al.);     and -   U.S. patent application Ser. No. 14/748,446 for CORDLESS INDICIA     READER WITH A MULTIFUNCTION COIL FOR WIRELESS CHARGING AND EAS     DEACTIVATION, filed Jun. 24, 2015 (Xie et al.).

In the specification and/or figures, typical embodiments of the invention have been disclosed. The present invention is not limited to such exemplary embodiments. The use of the term “and/or” includes any and all combinations of one or more of the associated listed items. The figures are schematic representations and so are not necessarily drawn to scale. Unless otherwise noted, specific terms have been used in a generic and descriptive sense and not for purposes of limitation. 

1. A system comprising: a memory configured to store a barcode template, wherein the barcode template comprises at least one fixed data field and at least one variable data field, the at least one fixed data field comprising known data common to more than one barcode and the at least one variable data field comprising unique variable data; and a processor coupled to the memory, wherein the processor is configured to: scan a barcode comprising encoded data; sample the encoded data of the barcode into a codeword array; select the barcode template; and apply the barcode template to the codeword array to correct data in areas in the codeword array that correspond to the at least one fixed data field of the barcode template.
 2. The system of claim 1, wherein the processor is further configured to: perform error correction on data in other areas in the decoded codeword array that correspond to the at least one variable data field; and output the error-corrected decoded codeword array, whereby readability of the barcode is enhanced.
 3. The system of claim 1, wherein the barcode template is defined by a barcode application specification.
 4. The system of claim 1, wherein the at least one fixed data field comprises one or more of a header, a field name, and a separator.
 5. The system of claim 1, wherein the at least one variable data field comprises one or more of a customer name, a customer address, a customer number, a lot number, and a manufacturing date.
 6. The system of claim 1, wherein the processor is further configured to apply the barcode template after determining at least one dimension of the barcode.
 7. The system of claim 1, wherein the processor is further configured to apply the barcode template after determining an error correction level of the barcode.
 8. The system of claim 1, wherein the processor is further configured to apply the barcode template after comparing the codeword array to the barcode template.
 9. The system of claim 1, wherein the barcode comprises one of a linear one-dimensional barcode and a two-dimensional barcode.
 10. The system of claim 1, wherein the barcode is in one of a PDF417 format, a 2D matrix symbology, and a data matrix format.
 11. The system of claim 1, wherein the barcode is in one of a data matrix ECC 200 format, a data matrix 000-140 format, an Aztec code format, a QR code format, and a high capacity color barcode format.
 12. An electronic device comprising: a barcode scanner; a memory configured to store a barcode template, wherein the barcode template comprises at least one fixed data field and at least one variable data field, the at least one fixed data field comprising known data common to more than one barcode and the at least one variable data field comprising unique variable data; and a barcode scanning software on the electronic device, wherein the barcode scanning software is configured to: scan a barcode comprising encoded data; sample the encoded data of the barcode into a codeword array; select the barcode template matching a format of the scanned barcode; and apply the barcode template to the codeword array to correct data in areas in the codeword array that correspond to the at least one fixed data field of the barcode template.
 13. The electronic device of claim 12, wherein the barcode scanning software is further configured to perform error correction on the codeword array and output the error-corrected codeword array.
 14. The electronic device of claim 12, wherein the barcode scanning software is further configured to apply the barcode template after determining at least one dimension of the barcode.
 15. The electronic device of claim 12, wherein the barcode scanning software is further configured to apply the barcode template after determining an error correction level of the barcode.
 16. The electronic device of claim 12, wherein the barcode scanning software is further configured to apply the barcode template after comparing the codeword array to the barcode template.
 17. The electronic device of claim 12, wherein the barcode comprises a two-dimensional barcode.
 18. The electronic device of claim 12, wherein the barcode is in one of a PDF417 format and a matrix format.
 19. The electronic device of claim 12, wherein the barcode is in a data matrix format.
 20. The electronic device of claim 12, wherein the barcode is in one of a data matrix ECC 200 format, a data matrix 000-140 format, an Aztec code format, a QR code format, and a high capacity color barcode format. 